package main.com.oaer.service;

import java.util.List;
import java.util.Map;

import main.com.oaer.model.Purview;
/**
 * 权限 业务类
 */
public interface PurviewService {
	/**
	 * 添加权限
	 * @param purview 待插入权限对象
	 */
	void add(Purview purview);
	
	/**
	 * 获取所有权限信息
	 * @return  所有权限列表
	 */
	List<Map<String, Object>> findPurviews();
	
	/**
	 * 删除权限,及其子权限，还包括角色、权限关系表中的关联
	 * @param purview  待删除权限对象
	 */
	void delete(Purview purview);
	
	/**
	 * 更新权限
	 * @param purview  待更新权限对象
	 */
	void update(Purview purview);
	
	/**
	 * 根据url获取权限实体
	 * @param url  权限的url
	 * @return
	 */
	Purview getPurview(String url);
	
	/**
	 * 根据id获取权限实体
	 * @param id 权限id
	 * @return  权限对象
	 */
	Purview load(Long id);
	
	/**
	 * 根据父id获取子节点
	 * @param id  权限id
	 * @return  子权限列表
	 */
	List<Purview> findChildPurview(Long id);
	
	/**
	 * 根据父id和用户id获取该用户的所有同级的三级权限
	 * @param parentId  父权限id
	 * @param userId  用户id
	 * @return
	 */
	List<Purview> findSiblingPurview(Long parentId, Long userId);
}
